using System.Threading.Tasks;
using UnityEngine;
using RPG.Domain.Character.Events;
using RPG.Infrastructure.Events;

namespace RPG.Application.EventHandlers.Character
{
    public class CharacterCreatedEventHandler : IEventHandler<CharacterCreatedEvent>
    {
        public Task HandleAsync(CharacterCreatedEvent @event)
        {
            Debug.Log($"Character created: {@event.Name} (ID: {@event.CharacterId.Value})");
            // 这里可以添加更多的处理逻辑，比如：
            // - 创建角色的3D模型
            // - 播放创建动画
            // - 更新UI
            return Task.CompletedTask;
        }
    }

    public class CharacterLevelUpEventHandler : IEventHandler<CharacterLevelUpEvent>
    {
        public Task HandleAsync(CharacterLevelUpEvent @event)
        {
            Debug.Log($"Character leveled up: {@event.CharacterId.Value} to level {@event.NewLevel.Value}");
            // 这里可以添加更多的处理逻辑，比如：
            // - 播放升级特效
            // - 播放音效
            // - 更新UI
            // - 显示属性变化
            return Task.CompletedTask;
        }
    }

    public class ItemEquippedEventHandler : IEventHandler<ItemEquippedEvent>
    {
        public Task HandleAsync(ItemEquippedEvent @event)
        {
            Debug.Log($"Item equipped: {@event.ItemId.Value} by character {@event.CharacterId.Value}");
            // 这里可以添加更多的处理逻辑，比如：
            // - 更新角色外观
            // - 播放装备音效
            // - 更新UI
            return Task.CompletedTask;
        }
    }
}
